package com.acargil.sudoku.view;

import java.awt.event.ActionListener;
import java.awt.event.KeyListener;
import java.awt.event.MouseListener;
import java.io.File;

/**
 * @author Oguzhan ACARGIL
 */
public interface ISudokuView {

    public static final int EMPTY_VALUE = 0;
    public static final int SHIFT_RIGHT = 1;
    public static final int SHIFT_LEFT = 2;
    public static final int SHIFT_UP = 3;
    public static final int SHIFT_DOWN = 4;
    public static final int ERROR_MESSAGE = 5;
    public static final int WARNING_MESSAGE = 6;
    public static final int INFORMATION_MESSAGE = 7;

    public void setSelectedCell(int value);
    public void setCell(int x, int y, int value);
    public int getCell(int x, int y);
    public void clearCell(int x, int y);

    public void setAllCells(int[][] values);
    public int[][] getAllCells();
    public void clearAllCells();

    public void setSelectionCoordinates(int x, int y);
    public int getSelectedXIndex();
    public int getSelectedYIndex();
    public void shiftSelection(int shift);
	public File getSaveFile() throws Exception;
	public File getLoadFile();
	
	public void addAboutListener(ActionListener instance);
	public void addClearListener(ActionListener instance);
	public void addExitListener(ActionListener instance);
	public void addGenerateListener(ActionListener instance);
	public void addInputListener(KeyListener instance);
	public void addLoadListener(ActionListener instance);
	public void addSaveListener(ActionListener instance);
	public void addSelectionListener(MouseListener instance);
    
}
